﻿using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using utils;

namespace dal.cgm_production_dao
{
    //[DataContract]
    //public class UsedMacInfo
    //{
    //    [DataMember]
    //    public int id { get; set; }
    //    [DataMember]
    //    public string order { get; set; }
    //    [DataMember]
    //    public string model { get; set; }
    //    [DataMember]
    //    public int quantity { get; set; }
    //    [DataMember]
    //    public string start_mac_address { get; set; }
    //    [DataMember]
    //    public string end_mac_address { get; set; }
    //    [DataMember]
    //    public string memory_addr { get; set; }
    //    [DataMember]
    //    public string chip_name { get; set; }
    //    [DataMember]
    //    public DateTime create_time { get; set; }



    //}
    //public class UsedMacInfoDao
    //{
    //    public static void InsertUsedMacInfos(List<UsedMacInfo> usedMacInfos)
    //    {
    //        if (usedMacInfos == null || usedMacInfos.Count == 0)
    //        {
    //            return;
    //        }

    //        // SQL 语句中将 order 列名用反引号括起来
    //        string sql = @"INSERT INTO used_mac_info (`order`, model, quantity, start_mac_address,end_mac_address, memory_addr,chip_name, create_time) 
    //               VALUES (@order, @model, @quantity, @start_mac_address,@end_mac_address, @memory_addr,@chip_name, @create_time)";

    //        using (MySqlConnection conn = new MySqlConnection(ConfigString.cgm_production))
    //        {
    //            conn.Open();
    //            using (MySqlTransaction transaction = conn.BeginTransaction())
    //            using (MySqlCommand cmd = new MySqlCommand(sql, conn))
    //            {
    //                cmd.Transaction = transaction;

    //                try
    //                {
    //                    foreach (var info in usedMacInfos)
    //                    {
    //                        cmd.Parameters.Clear();
    //                        cmd.Parameters.Add(new MySqlParameter("@order", info.order));
    //                        cmd.Parameters.Add(new MySqlParameter("@model", info.model));
    //                        cmd.Parameters.Add(new MySqlParameter("@quantity", info.quantity));
    //                        cmd.Parameters.Add(new MySqlParameter("@mac_address", info.start_mac_address));
    //                        cmd.Parameters.Add(new MySqlParameter("@mac_address", info.end_mac_address));
    //                        cmd.Parameters.Add(new MySqlParameter("@memory_addr", info.memory_addr));
    //                        cmd.Parameters.Add(new MySqlParameter("@chip_name", info.chip_name));
    //                        cmd.Parameters.Add(new MySqlParameter("@create_time", info.create_time));
    //                        cmd.ExecuteNonQuery();
    //                    }
    //                    transaction.Commit();
    //                }
    //                catch (MySqlException sqlEx)
    //                {
    //                    transaction.Rollback();
    //                    // 更详细的错误信息
    //                    throw new Exception("MySQL Error: " + sqlEx.Message, sqlEx);
    //                }
    //                catch (Exception ex)
    //                {
    //                    transaction.Rollback();
    //                    throw new Exception("Error inserting used MAC infos: " + ex.Message, ex);
    //                }
    //            }
    //        }
    //    }

    //    public static void InsertUsedMacInfo(UsedMacInfo usedMacInfo)
    //    {
    //        if (usedMacInfo == null)
    //        {
    //            return;
    //        }

    //        // SQL 语句中将 order 列名用反引号括起来
    //        string sql = @"INSERT INTO used_mac_info (`order`, model, quantity, start_mac_address,end_mac_address, memory_addr,chip_name, create_time) 
    //               VALUES (@order, @model, @quantity, @start_mac_address,@end_mac_address, @memory_addr, @chip_name, @create_time)";
    //        List<MySqlParameter> parameters = new List<MySqlParameter>();
    //        parameters.Add(new MySqlParameter("@order", usedMacInfo.order));
    //        parameters.Add(new MySqlParameter("@model", usedMacInfo.model));
    //        parameters.Add(new MySqlParameter("@quantity", usedMacInfo.quantity));
    //        parameters.Add(new MySqlParameter("@start_mac_address", usedMacInfo.start_mac_address));
    //        parameters.Add(new MySqlParameter("@end_mac_address", usedMacInfo.end_mac_address));
    //        parameters.Add(new MySqlParameter("@memory_addr", usedMacInfo.memory_addr));
    //        parameters.Add(new MySqlParameter("@chip_name", usedMacInfo.chip_name));
    //        parameters.Add(new MySqlParameter("@create_time", usedMacInfo.create_time));
    //        MySqlHelper.ExecuteNonQuery(ConfigString.cgm_production, sql, parameters.ToArray());

    //    }

    //    public static IList<UsedMacInfo> GetUsedMacInfos(string productType, string orderNumber)
    //    {
    //        // 基础查询
    //        string sql = @"SELECT `order`,model,start_mac_address,end_mac_address,quantity, memory_addr,chip_name, create_time FROM used_mac_info   WHERE 1=1";
    //        // 动态添加条件
    //        List<MySqlParameter> parameters = new List<MySqlParameter>();

    //        //if (!string.IsNullOrEmpty(mac))
    //        //{
    //        //    sql += " AND mac_address = @mac";
    //        //    parameters.Add(new MySqlParameter("@mac", mac));
    //        //}

    //        if (!string.IsNullOrEmpty(productType))
    //        {
    //            sql += " AND model = @productType";
    //            parameters.Add(new MySqlParameter("@productType", productType));
    //        }

    //        if (!string.IsNullOrEmpty(orderNumber))
    //        {
    //            sql += " AND `order` = @orderNumber";
    //            parameters.Add(new MySqlParameter("@orderNumber", orderNumber));
    //        }

    //        // 执行查询
    //        DataSet ds = MySqlHelper.ExecuteDataset(ConfigString.cgm_production, sql, parameters.ToArray());

    //        IList<UsedMacInfo> list = DataContainerUtil.DataTableToList<UsedMacInfo>(ds.Tables[0]);

    //        return list.Any() ? list : new List<UsedMacInfo>();
    //    }

    //}
}
